home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Medal Software 3
/
Gold Medal Software - Volume 3 (Gold Medal) (1994).iso
/
database
/
mulco403.arj
/
MULTICOL.DOC
< prev
next >
Wrap
Text File
|
1994-03-20
|
33KB
|
656 lines
MULTICOL.DOC
03/20/94
The MULTICOL.EXE program creates multi-columned listings from a text file.
Features:
* You can specify the number of columns and desired page width for the
multi-column listing
* The program can provide titles, column headers, and footers for the
reformatted listing
* MULTICOL can also add these titles, etc to single-column listings,
providing some pagination capabilities for regular text
* Can reformat for display ASCII-delimited, fixed field, and dBase input files
* Can present totals and subtotals for dBase and ASCII-delimited fields
* Can reflow text to fit within the specified page widths
* Can imbed printer control characters in the resulting file
* Can remove (or add) columns within a text document
Examples:
MULTICOL is an easy way of adding header and footer information to text
documentation. For my DEMO System documentation, I maintain a control file
(MULTIHED.CTL)--control files are described below--that includes the following
lines:
; Is used to create page headings for text documents.
/COLUMNS=1
/EJECT
/LINES=59
/TITLEC1="^N Last revised ^D Page ^B"
/TITLE2=""
/OVERWRITE
Then I create the documentation using the following command:
MULTICOL DEMOSYS.DOC DEMOSYS.REF /CMULTIHED.CTL
The "^N" parameter in the title is replaced with the file name, "^D" is replaced
with today's date, and "^B" is replaced with the page number. Notice I'm not
creating a multi-column output here and am not reformatting the original text at
all except to add headers and footers.
As another example, I frequently need a sorted multi-column directory listing.
DIR /ON /W is fine in DOS but I prefer to see the filenames listed
alphabetically down the page, not across it. So I maintain a control file
(in C:\DIRW.CTL) for my Epson printer that contains these lines:
; Is used for multicolumn DIR listings.
/COLUMNS=7
/OVERWRITE
/WIDTH=132
; This is the setup string used to set a Epson to compressed mode.
/SETUP="\015"
; Don't want to leave the printer in that mode when you leave.
/RESET="\018"
Then I create the listing using the following commands:
DIR /ON > TEMP.TXT
MULTICOL TEMP.TXT TEMP.NEW /CC:\DIRW.CTL
A similar example of the above (multicolumn DIR listings) creates a multicolumn
listing with just the file name and creation date. This requires creating a
field definition file (called, say, C:\DIRW.DEF) roughly like the following:
c 12 0 12 File Name
c 11 0 0 File Size
c 8 0 8 Updated
/+=-
/-=.
/-=Serial
Note that this definition file will provide the string "File Name" as the column
header for the first column of data, skip the second (file size), provide
"Updated" for the date, and then skip the rest of the DIR output. It will also
skip any lines in the directory that don't include a dash ("-") but drop the
records containing "." or "Serial", both of which appear in the heading
information. Once the definition file is provided, you can create a
three-column listing with the following commands. (You could make it have more
columns if you wanted to specify compressed options; see the prior example)
DIR /ON > TEMP.TXT
MULTICOL TEMP.TXT TEMP.NEW /DEF=C:\DIRW.DEF /COLUMNS=3
A sample of what a portion of the output file (TEMP.NEW) might look like:
Page 1
| |
File Name Updated | File Name Updated | File Name Updated
| |
AV BAS 01-08-94 | DEMOMAKE DOC 01-08-94 | FIXTEXT DIZ 01-07-94
AV DIZ 03-22-93 | DEMOMAKE EXE 01-30-94 | FIXTEXT DOC 01-26-94
AV DOC 01-08-94 | DEMOMAKE REF 01-08-94 | FIXTEXT EXE 01-30-94
Storing options in a control file:
The routine allows for a number of parameters, most of which can be very long.
To avoid keying all of these in each time, a control file is provided for. The
control file is designated with the "/Cctlfile" parameter and consists of
regular MULTICOL parameters. Every parameter except the /Cctlfile parameter
itself is allowed.
The control file provides several benefits for you. (a) It makes it easier to
enter the same parameters multiple times. (b) It avoids too-long lines in DOS
(DOS can't handle lines above about 120 characters in length). (c) It allows
you to store default printer characteristics (one or more sets of them actually)
and bring them in easily. (d) It allows you to maintain default formats for
your output.
The format for the control statement file is essentially free-form. Empty lines
and lines which begin with a semi-colon or colon are ignored. Typically,
parameters begin in column 1 and only one parameter is provided on each line but
this is optional. For example:
; Sample control file for MULTICOL program
; This one is for printing wide files (132-columns)
/DELIM=" │ "
/WIDTH=132
; This is the setup string used to set a LaserJet to compressed
; portrait mode.
/SETUP="\027(s16.66H"
; Don't want to leave the printer in that mode when you leave.
/RESET="\027E"
; The printer already has pre-defined page lengths so don't
; put in page ejects.
/-EJECT
You can override any of the parameters in the control file from the command line
when you invoke MULTICOL. (Exception: If your control card file includes input
and/or output file name specifications, these cannot be overridden from the
command line.)
Field definition file:
NOTE: THE FOLLOWING DISCUSSION DOES NOT APPLY TO BASIC TEXT FILES. IF YOU JUST
WANT TO ADD HEADERS AND SUCH TO STANDARD TEXT STUFF, SKIP THIS SECTION. IT IS
APPLICABLE ONLY FOR FIELDED DATA FILES.
For data files (ASCII-delimited, dBase, and fixed field input files), you can
use MULTICOL to present a reasonably formatted listing of variables. Unless you
are reading a dBase file, this program requires a field definition file to
figure out the characteristics for each field and also to set certain file
characteristics. If you're processing an ASCII-delimited input file, the
routine can try to create a field definition file for you if desired.
The definition file can be created with any text editor. The definition file
consists of several records with the following fields separated by spaces.
Except for the record type indicator (which must begin in column 1), all other
fields can be placed in any columns:
(1) record type (see below)
(2) length of field on input
(3) number of decimal places for numeric data (if you don't know,
put a "?" here; for non-numeric data, a "0" is fine) on output
(4) length of field on output
Any characters after the field length are treated as comment fields. You would
typically use this to enter the field name or column position or any other
information of use to you.
The data record types accepted by this routine are as follows:
type C = character data
N = numeric
L = logical (T or F)
D = date (in yyyymmdd format)
The data fields should be in the order the fields are found in the source file.
You may also specify up to 10 include filters and up to 10 exclude filters in
the field definition file. If an include filter is specified, the input record
must contain at least one of the specified character strings in order to be
processed. If an exclude filter is specified, any input record which contains
any of the specified character strings will be ignored. Filters are case
sensitive (capitalization matters) and processed as "or" items (if any filter is
met, the condition is met; filters are not combined to determine fulfillment).
The filters are specified in the field definition file in the following ways:
/+=string include filter, the string "string" can appear anywhere
/S+=string include filter, the string "string" is at the beginning
of the record
/+S=string include filter, the string "string" is at the end of the
record
/-=string exclude filter, the string "string" can appear anywhere
/S-=string exclude filter, the string "string" is at the beginning
of the record
/-S=string exclude filter, the string "string" is at the end of the
record
For example, if you want to specify in your control file that you only want
records that contain either "Japan" or "France" *and* you want to exclude any
records that begin with an underscore character, you would need to include the
following three filter statements:
/+=Japan
/+=France
/S-=_
The character string can include hexadecimal codes (in the &Hxx format) or
decimal codes (in the \ddd format) if necessary.
Note that for fixed field files, you have to account for every byte in the file.
If you have something like this:
12345678_1_2345678_2_2345678_3 (column positions)
APPLE X Y 12 BANANAS
Even though you may think you only have five fields, the following .DEF file
will NOT work:
; Bad .DEF file: Note does not account for blank spaces
C 8 0 8 Fruit1
C 1 0 1 Class1
C 1 0 1 Class2
N 5 0 5 Value
C 11 0 11 Fruit2
You may want the Fruit1 field to be in columns 1 through 8 and Class1 to be in
column 10 but the routine will not know to skip column 9 so it will start
reading Class1 beginning in column 9, Class2 beginning in column 10, etc. To
drop the blank positions, you have to add dummy fields on input and ask for them
to be dropped on output:
; Good .DEF file: Spaces between fields are accounted for
C 8 0 8 Fruit1
C 1 0 0 Filler
C 1 0 1 Class1
C 1 0 0 Filler
C 1 0 1 Class2
C 1 0 0 Filler
N 5 0 5 Value
C 1 0 0 Filler
C 11 0 11 Fruit2
You can also use the input field length and output field lengths to either drop
fields using other formats (by specifying a zero length for the output field
length) or for creating fields on output (by specifying a zero length for the
input field length). You can also use this to expand on contract a field. For
example, if Fruit1 is 8 characters long but you only want it to occupy 4
characters on output (thus the field would be truncated), specify 8 for the
input field length and 4 for the output field length.
For dBase files, a deffile will automatically be created for you unless you
specify /DEF. In that case, the routine will read the deffile and act
appropriately. This is necessary if you want fields expanded or ignored.
You can also use the /PRINT specification to select which fields you want
printed.
For adding headers and footers to regular text files, make sure you specify
/COLUMNS=1. The system starts a new page when it runs into lines with page
eject characters or when it hits the number of lines specified in the /LINES=n
parameter. (The page eject part is only true if /-WRAP is in effect.)
Syntax:
MULTICOL infile outfile [ /OVERWRITE | /-OVERWRITE | /OVERASK ]
[ /DELIM="string" ] [ /LINES=n ] [ /WIDTH=n ] [ /EJECT | /-EJECT ]
[ /COLUMNS=n ] [ /-WRAP | /WRAP [ /INDENT=n ] | /REFLOW ]
[ /Cctlfile ] [ /SETUP="string" ] [ /RESET="string" ]
[ /{ TITLE | HEADER | FOOTER }[ R | C | L ][ 1 to 5]="text" ]
[ /{ TITLE | HEADER | FOOTER }{ T | B }="string" ]
[ /-TITLE ] [ /FROM FIXED | /FROM ASCII | /FROM DBF ] [ /DELETED ]
[ /DEF=deffile ] [ /DEF | /-DEF ]
[ /DELIMS=aroundstrings,aroundnums,betweenfields ] [ /BEEP | /-BEEP ]
[ /SKIP | /MISSING | /ABORT ] [ /GAP=n ] [ /TALLY ]
[ /INMISS=val ] [ /INMISSC=val ] [ /OUTMISS=val ] [ /OUTMISSC=val ]
[ /SUM={ col_spec | var_spec } ] [ /BREAK={ col_spec | var_spec } ]
[ /PRINT={ col_spec | var_spec } ] [ /? | /?&H ]
where:
"infile" is the name of the ASCII text file that you want reformatted into a
multicolumn file.
"outfile" is the name of the ASCII text file that you want to create. "infile"
and "outfile" cannot be the same. While "outfile" is typically a file name, you
can specify devices like "PRN:" or "SCRN:" if you want to.
"/OVERWRITE" says to write over the outfile if it already exists.
"/-OVERWRITE" says to abort if the outfile exists already.
"/OVERASK" says to prompt if the outfile exists already. This is normally the
default but you can override this using the CONFIGWS.EXE program.
"/DELIM="string"" indicates the character string that should be used to separate
columns. Note that the string itself must appear within quotation marks. By
default, the string is " | ".
"/LINES=n" indicates how many physical lines can fit on your printed page. This
setting is used for determining where headers, footers, page eject characters
(with /EJECT option), and number of lines per column for multi-column output.
(It's not used in cases where you're using /COLUMNS=1, none of the other stuff,
and you've specified /-TITLE to turn off the default title line.) You
can also set it to /LINES=0 to turn off page breaks; only the first
title (if any) will print in that case. Defaults to /LINES=60.
"/WIDTH=n" indicates how many physical characters can fit on your printed page.
Defaults to /WIDTH=80. Typically, if you are in compressed mode, the value is
/WIDTH=132.
"/EJECT" says to add a page eject after the maximum lines-per-page (/LINES=n)
setting. This is not recommended if you're using a printer with a defined page
size that is the the same or smaller than the /LINES=n setting. If you're using
something like a LaserJet, setting /EJECT will typically result in blank pages
being generated after each full page. The default is "/-EJECT".
"/-EJECT" is the opposite of "/EJECT". This is the default.
"/COLUMNS=n" indicates how many text columns you want to appear. The value can
be as low as one (useful if you're just doing reformatting of paragraphs).
There's no maximum value but anything above 7 or so starts looking worthless.
The default value is /COLUMNS=2.
The combination of the /COLUMNS=n, /DELIM="string", and /WIDTH=n tells the
program how wide each physical column is. For example, using the defaults of
/COLUMNS=2, /DELIM=" | ", and /WIDTH=80, each text column is a maximum of 38
characters. (Width - (Size of Delimiter * (Number of columns - 1), all divided
by 2. INT((80-(3*1))/2) is 38.) The routine tells you what column size it
picked; if you don't like the result, adjust some of your other parameters and
try it again.
"/-WRAP", "/WRAP", and "/REFLOW" tells the program what you want it to do with
text that exceeds the width of each physical column. The default is /-WRAP.
Each is explained separately below:
"/-WRAP" indicates that long lines are to be truncated and the excess characters
are lost. This is the default.
"/WRAP" says the line is to be parsed into words and any word(s) that doesn't
fit on the original line spills over on successive line(s). The spillover lines
are indented by the value of "/INDENT=n". By default, the secondary lines are
indented by 2 spaces ("/INDENT=2").
"/INDENT=n"--see /WRAP above.
"/REFLOW" is the most sophisticated of the options. /REFLOW will treat most of
the text as paragraphs are readjust the length of the entire paragraph. The
reflowing stops whenever a new paragraph is detected. The routine considers a
new paragraph to start whenever the succeeding line is either blank or it starts
with a space. Unlike with the other options, you can actually end up with fewer
lines in your output file than you had in your input file using /REFLOW. This
only happens of course if the source lines were generally shorter than the
computer text column width.
"/Cctlfile" specifies an external text file that contains control statements.
See the discussion above about control files.
"/SETUP="string"" specifies the initialization string to put at the beginning of
the file. This is typically used to make sure your printer has the proper
orientation (landscape vs portrait), characters per inch (cpi), and lines per
inch (lpi) settings before printing. The setup string itself must appear in
quotation marks. Use "\027" for the Escape character and any other ASCII code
can be entered with "\" followed by its 3-digit value (e.g. "\032" is a space).
You can also use hexadecimal values as &Hxx. See the character table at the end
of this documentation. You have to know your own setup strings. Borland's
documentation provides some very useful tables for this sort of thing (use "\"
instead of "/" though). For an HP LaserJet, the setups I use all of the time
are:
Orientation PageLen RMargin String
Portrait 60 80 \027E
Portrait 60 132 \027(s16.66H
Landscape 45 106 \027&l10
Landscape 45 176 \027&l10\027(s16.66H
Landscape 66 106 \027&l1o5.45C
Landscape 66 176 \027&l1o5.45C\027(s16.66H
"/RESET="string"" specifies the string to send after your file is done. This
typically resets the printer to its system default setting so you won't get
stuck in landscape mode forever. The setup string itself must appear in
quotation marks. Use "\027" for the Escape character. For an HP LaserJet, the
following resets the printer to its factory settings:
\027E
"/{ TITLE | HEADER | FOOTER } [ R | C | L ] [ 1 to 5 ]="text"" allows you to
specify up to 5 lines each for the report's TITLE (at the top of each page),
HEADER (at the top of each column), and FOOTER (at the bottom of each page).
You can specify positioning as well:
R = right-justify the text
C = center the text (this is the default for /TITLE and /HEADER)
L = left-justify the text (this is the default for /FOOTER)
If no line number is specified, line 1 is presumed. If a line number is
specified, all lines before that number are presumed to contain something and
will be blank filled if you don't provide anything. If, for example, you
specify "/TITLER3="Hi!"", without specifying any other titles, then you'll get
blank lines for /TITLE1 and /TITLE2, but you won't get any /TITLE4 or /TITLE5.
The text itself can contain one of six imbedded string-replacement codes:
^B will be replaced by the page number
^D will be replaced by today's date (in mm/dd/yy form)
^T will be replaced by today's time (in hh:mm form)
^N will be replaced by the input file's name
^A will be replaced by the input file's creation date (mm/dd/yy form)
^I will be replaced by the input file's creation time (hh:mm form)
The only title, header, or footer provided by default is /TITLE1="Page ^B". If
you don't want to replace the title with something else, the only way to turn it
off entirely is to use the /-TITLE option (below).
"/{TITLE | HEADER | FOOTER }{ T | B }="string"" allows you to specify a
repeating string to be placed either on top of or on the bottom of your titles,
headers, and footers. The string, typically consisting of just a few
characters, is repeated by the routine until it fills up the available space.
For example, "/TITLET=" -"" would add the following line at the top of the
report:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
This option is typically used to (a) insure that there are blank lines before
footer lines and (b) to have demarcations between sections.
"/-TITLE" says to turn off all titles including the default one (/TITLE="Page
^B"). Note that any /TITLE specifications used after /-TITLE will still appear.
"/FROM FIXED" says that the input file is a fixed field file. Any file can be
fixed field: a page of text is typically a fixed field of 80 characters. All
standard text files are fixed-field. The default for MULTICOL is /FROM FIXED.
Note that if you want, you can specify a field definition file for fixed field
files. See the examples given in the beginning.
"/FROM ASCII" says that the input file is ASCII-delimited (typically with quotes
around strings and commas between fields--MULTICOL treats the quotes as
optional). Typically, the routine expects a deffile (/DEF=defile) to be
specified with the definition of fields. The routine will determine a field
definition file for you if the /-DEF parameter is specified.
"/FROM DBF" specifies that the input file is a dBase file. If the file
extension is .DBF, the routine will presume this. The routine uses dBase's
default field lengths unless /DEF is specified along with /DEF=deffile.
"/DELETED" applies for dBase input files only. It says you want to retain
deleted records. Otherwise, they're dropped in the output file.
"/DEF=deffile" provides the name of the field definition file typically for
ASCII-delimited and some dBase input files. (You can also provide one for
fixed-field files if you want.) A description of the definition file was given
previously. If no deffile is specifically provided and you're using either
/FROM ASCII or /FROM DBF, the routine will presume it is called the same thing
as the infile but it has the extension of ".DEF". A deffile has to be
specifically provided for /FROM FIXED files if one is desired.
"/DEF" applies to dBase input files only. It tells MULTICOL that you want to
read the field information from an existing field-definition file instead of
reading the definition in dBase itself. Normally, this is only done if you want
the program to expand, condense, or eliminate some fields.
"/-DEF" applies to ASCII-delimited input files only. It tells MULTICOL to scan
the first few records in the input file and to figure out the field-definition
file for you. There are some risks in this primarily in that the routine may
guess a field type incorrectly. This also takes awhile. The routine will
automatically write out the field-definition file for you if you select this
option.
"/DELIMS=aroundstrings,aroundnums,betweenfields" allows you to specify the
delimiters (in sequence) around string fields, around numeric fields, and
between fields. Defaults to:
/DELIMS=",,,
(Use quotes around character strings, nothing around numeric data, and the third
comma indicates that there is a comma between fields.) The replacement string
can include hexadecimal codes (in the &Hxx format) or decimal codes (in the \ddd
format) if necessary so either of the following would put a tab between fields:
/DELIMS=",,&H09
/DELIMS=",,\009
See the table of hexadecimal and decimal codes at the end of this documentation.
"/BEEP" beeps when the program is finished.
"/-BEEP" reverses /BEEP. This is normally the default but you can override this
using the CONFIGWS.EXE program.
"/SKIP" says to skip ASCII-delimited records with bad data values; otherwise the
routine aborts when it runs into any. /SKIP, /MISSING, and /ABORT are mutually
exclusive.
"/MISSING" says to presume any missing fields in an ASCII-delimited record
should be filled in with blanks (for character fields) and 0 for numeric fields.
Incomplete records are written out (unlike in /SKIP). /SKIP, /MISSING, and
/ABORT are mutually exclusive.
"/ABORT" says to abort when you run into bad records. This is normally the
default but you can override this using the CONFIGWS.EXE program. /SKIP,
/MISSING, and /ABORT are mutually exclusive.
"/GAP=n" is used when printing ASCII-delimited or dBase files. It tells the
program how many spaces to print between each variable. The default is /GAP=2.
"/TALLY" says to present a count of items. If a /BREAK specification is
provided, there will be a tally for each break as well as for the grand total.
"/INMISS=val" specifies that any numeric value that has the character string
representation of "val" will be considered missing. Note that this is an exact
character string comparison so /INMISS=1 will not compare to a value of "1.00".
Defaults to /INMISS=NULL (which translates as spaces).
"/INMISSC=val" specifies that any character string value that has the value of
"val" will be considered missing. Defaults to /INMISSC= (which shouldn't
happen very much).
"/OUTMISS=val" specifies that any missing numeric input value will be translated
on output as "val". For example, "/OUTMISS=N.A." would fill in "N.A." for each
missing value. Defaults to /OUTMISS=NULL (which translates as spaces).
"/OUTMISSC=val" specifies that any missing character input value will be
translated on output as "val". Defaults to /OUTMISSC=NULL (which translates as
spaces).
"/SUM={ col_spec | var_spec }" says to summarize (add) all values in particular
columns. If ASCII-delimited or dBase input is used, you can specify variables
to be added. If a /BREAK specification is provided, there will be subtotals at
each break as well as grand total.
The "col_spec | var_spec" portion expands to "{ Cx[-x] | Vx[-x] } [, {Cx[-x] |
Vx[-x] } ]..." where "x" is the column or variable number, "-" indicates a
range, and "C" means column whereas "V" means variable. If you have an
ASCII-delimited file and you want the values of the first three variables
summarized, you'd say "/SUM=C1-3". If you want variables 2, and 4 through 6
summarized, you'd say "/SUM=C2,C4-6". If you want the values in columns 10
through 20 summarized, you'd say "/SUM=C10-20". Note that for column
specifications, you have to request the output columns, not input columns.
"/BREAK={ col_spec | var_spec }" says to present tally, total, or blank lines
based on the values in certain columns or variables. For example, if you had an
alphabetical listing and you wanted to, you could break up the listing by the
first letter of the last name. A break is generated whenever there is a change
in any character in the column or variable range specified. The
"col_spec | var_spec" specification is identical to the /SUM specification.
"/PRINT={ col_spec | var_spec }" says to print only some of the fields. For
example, if you have a dBase file with 10 variables and you only want some of
them to print out, you can say "/PRINT=V1-3,V6,V8" or something like that. Note
that the /PRINT specification works in conjunction with any 0-length output
specifications in the deffile.
"/?" or "/HELP" or "HELP" gives you syntactical help.
"/?&H" gives you a hexadecimal and decimal conversion table.
Return codes:
MULTICOL returns the following ERRORLEVEL codes:
0 = no problems
254 = problems with format of file
255 = syntax problems, or /? requested
Author:
This program was written by Bruce Guthrie of Wayne Software. It is free for use
and redistribution provided relevant documentation is kept with the program, no
changes are made to the program or documentation, and it is not bundled with
commercial programs or charged for separately. People who need to bundle it in
for-sale packages must pay a $50 registration fee to "Wayne Software" at the
following address.
Additional information about this and other Wayne Software programs can be found
in the file BRUCEymm.DOC which should be included in the original ZIP file.
("ymm" is replaced by the last digit of the year and the two digit month of the
release. BRUCE312.DOC came out in December 1993. This same naming convention
is used in naming the ZIP file that this program was included in.) Comments and
suggestions can also be sent to:
Bruce Guthrie
Wayne Software
113 Sheffield St.
Silver Spring, MD 20910
fax: (301) 588-8986
Foreign users: Please provide an Internet address in all correspondence.
Decimal and hexadecimal codes:
e.g. "\066\097\116" and "&H426174" both are "Bat"
+---------------------------------------------------------------------------
| dec hex chr | dec hex chr | dec hex chr | dec hex chr | dec hex chr |
+--------------+--------------+--------------+--------------+--------------+
| \000 &H00 nul| \052 &H34 4 | \104 &H68 h | \156 &H9C £ | \208 &HD0 ╨ |
| \001 &H01 | \053 &H35 5 | \105 &H69 i | \157 &H9D ¥ | \209 &HD1 ╤ |
| \002 &H02 | \054 &H36 6 | \106 &H6A j | \158 &H9E ₧ | \210 &HD2 ╥ |
| \003 &H03 | \055 &H37 7 | \107 &H6B k | \159 &H9F ƒ | \211 &HD3 ╙ |
| \004 &H04 | \056 &H38 8 | \108 &H6C l | \160 &HA0 á | \212 &HD4 ╘ |
| \005 &H05 | \057 &H39 9 | \109 &H6D m | \161 &HA1 í | \213 &HD5 ╒ |
| \006 &H06 | \058 &H3A : | \110 &H6E n | \162 &HA2 ó | \214 &HD6 ╓ |
| \007 &H07 bel| \059 &H3B ; | \111 &H6F o | \163 &HA3 ú | \215 &HD7 ╫ |
| \008 &H08 bs | \060 &H3C < | \112 &H70 p | \164 &HA4 ñ | \216 &HD8 ╪ |
| \009 &H09 tab| \061 &H3D = | \113 &H71 q | \165 &HA5 Ñ | \217 &HD9 ┘ |
| \010 &H0A lf | \062 &H3E > | \114 &H72 r | \166 &HA6 ª | \218 &HDA ┌ |
| \011 &H0B vt | \063 &H3F ? | \115 &H73 s | \167 &HA7 º | \219 &HDB █ |
| \012 &H0C pg | \064 &H40 @ | \116 &H74 t | \168 &HA8 ¿ | \220 &HDC ▄ |
| \013 &H0D cr | \065 &H41 A | \117 &H75 u | \169 &HA9 ⌐ | \221 &HDD ▌ |
| \014 &H0E | \066 &H42 B | \118 &H76 v | \170 &HAA ¬ | \222 &HDE ▐ |
| \015 &H0F | \067 &H43 C | \119 &H77 w | \171 &HAB ½ | \223 &HDF ▀ |
| \016 &H10 | \068 &H44 D | \120 &H78 x | \172 &HAC ¼ | \224 &HE0 α |
| \017 &H11 | \069 &H45 E | \121 &H79 y | \173 &HAD ¡ | \225 &HE1 ß |
| \018 &H12 | \070 &H46 F | \122 &H7A z | \174 &HAE « | \226 &HE2 Γ |
| \019 &H13 | \071 &H47 G | \123 &H7B { | \175 &HAF » | \227 &HE3 π |
| \020 &H14 | \072 &H48 H | \124 &H7C | | \176 &HB0 ░ | \228 &HE4 Σ |
| \021 &H15 | \073 &H49 I | \125 &H7D } | \177 &HB1 ▒ | \229 &HE5 σ |
| \022 &H16 | \074 &H4A J | \126 &H7E ~ | \178 &HB2 ▓ | \230 &HE6 µ |
| \023 &H17 | \075 &H4B K | \127 &H7F | \179 &HB3 │ | \231 &HE7 τ |
| \024 &H18 | \076 &H4C L | \128 &H80 Ç | \180 &HB4 ┤ | \232 &HE8 Φ |
| \025 &H19 | \077 &H4D M | \129 &H81 ü | \181 &HB5 ╡ | \233 &HE9 Θ |
| \026 &H1A eof| \078 &H4E N | \130 &H82 é | \182 &HB6 ╢ | \234 &HEA Ω |
| \027 &H1B esc| \079 &H4F O | \131 &H83 â | \183 &HB7 ╖ | \235 &HEB δ |
| \028 &H1C | \080 &H50 P | \132 &H84 ä | \184 &HB8 ╕ | \236 &HEC ∞ |
| \029 &H1D ???| \081 &H51 Q | \133 &H85 à | \185 &HB9 ╣ | \237 &HED φ |
| \030 &H1E ???| \082 &H52 R | \134 &H86 å | \186 &HBA ║ | \238 &HEE ε |
| \031 &H1F ???| \083 &H53 S | \135 &H87 ç | \187 &HBB ╗ | \239 &HEF ∩ |
| \032 &H20 | \084 &H54 T | \136 &H88 ê | \188 &HBC ╝ | \240 &HF0 ≡ |
| \033 &H21 ! | \085 &H55 U | \137 &H89 ë | \189 &HBD ╜ | \241 &HF1 ± |
| \034 &H22 " | \086 &H56 V | \138 &H8A è | \190 &HBE ╛ | \242 &HF2 ≥ |
| \035 &H23 # | \087 &H57 W | \139 &H8B ï | \191 &HBF ┐ | \243 &HF3 ≤ |
| \036 &H24 $ | \088 &H58 X | \140 &H8C î | \192 &HC0 └ | \244 &HF4 ⌠ |
| \037 &H25 % | \089 &H59 Y | \141 &H8D ì | \193 &HC1 ┴ | \245 &HF5 ⌡ |
| \038 &H26 & | \090 &H5A Z | \142 &H8E Ä | \194 &HC2 ┬ | \246 &HF6 ÷ |
| \039 &H27 ' | \091 &H5B [ | \143 &H8F Å | \195 &HC3 ├ | \247 &HF7 ≈ |
| \040 &H28 ( | \092 &H5C \ | \144 &H90 É | \196 &HC4 ─ | \248 &HF8 ° |
| \041 &H29 ) | \093 &H5D ] | \145 &H91 æ | \197 &HC5 ┼ | \249 &HF9 ∙ |
| \042 &H2A * | \094 &H5E ^ | \146 &H92 Æ | \198 &HC6 ╞ | \250 &HFA · |
| \043 &H2B + | \095 &H5F _ | \147 &H93 ô | \199 &HC7 ╟ | \251 &HFB √ |
| \044 &H2C , | \096 &H60 ` | \148 &H94 ö | \200 &HC8 ╚ | \252 &HFC ⁿ |
| \045 &H2D - | \097 &H61 a | \149 &H95 ò | \201 &HC9 ╔ | \253 &HFD ² |
| \046 &H2E . | \098 &H62 b | \150 &H96 û | \202 &HCA ╩ | \254 &HFE ■ |
| \047 &H2F / | \099 &H63 c | \151 &H97 ù | \203 &HCB ╦ | \255 &HFF |
| \048 &H30 0 | \100 &H64 d | \152 &H98 ÿ | \204 &HCC ╠ | |
| \049 &H31 1 | \101 &H65 e | \153 &H99 Ö | \205 &HCD ═ | |
| \050 &H32 2 | \102 &H66 f | \154 &H9A Ü | \206 &HCE ╬ | |
| \051 &H33 3 | \103 &H67 g | \155 &H9B ¢ | \207 &HCF ╧ | |
+--------------+--------------+--------------+--------------+--------------+